package in.lib.handler.streams;
import in.lib.Debug;
import in.lib.adapter.base.MessageAdapter;
import in.lib.exception.ExceptionHandler;
import in.lib.handler.base.MessageStreamResponseHandler;
import in.lib.thread.StreamFragmentRunnable;
import in.model.base.Message;
import in.rob.client.R;
import android.content.Context;
import android.text.TextUtils;
import android.widget.Toast;
public class MessagesResponseHandler extends MessageStreamResponseHandler
{
public MessagesResponseHandler(Context c, boolean append)
{
super(c, append);
setFailMessage(c.getString(R.string.messages_stream_fail));
}
@Override public void onCallback()
{
if (getFragment() != null)
{
getFragment().runOnUiThread(responseRunner);
}
if (getFragment() != null)
{
getFragment().extractUsersAndTags(getObjects());
}
}
@Override public void onFinish(boolean failed)
{
if (failed)
{
if (getConnectionInfo().responseCode == 403)
{
Toast.makeText(getContext(), R.string.unauthorized, Toast.LENGTH_LONG).show();
getFragment().getActivity().finish();
}
else
{
Toast.makeText(getContext(), R.string.stream_fail, Toast.LENGTH_LONG).show();
}
if (getFragment() != null)
{
getFragment().setLoading(false);
getFragment().getRefreshHelper().finish();
}
}
}
private StreamFragmentRunnable responseRunner = new StreamFragmentRunnable()
{
@Override public void run()
{
if (getFragment() != null)
{
try
{
getFragment().getRefreshHelper().finish();
getFragment().getHeadedListView().setBlockLayoutChildren(true);
if (!TextUtils.isEmpty(getLastId()))
{
getFragment().getAdapter().setLastId(getLastId());
}
if (getAppend())
{
getFragment().getAdapter().addItems(getObjects());
}
else
{
int[] pos = getFragment().getLastViewPosition(getObjects());
getFragment().getAdapter().setFirstId(getFirstId());
getFragment().getAdapter().setItems(getObjects());
getFragment().registerPositionReset(pos[0], pos[1]);
if (((MessageAdapter)getFragment().getAdapter()).getCenter() == null && getObjects().size() > 0)
{
((MessageAdapter)getFragment().getAdapter()).setCenter((Message)getObjects().get(0));
}
}
getFragment().getAdapter().setHasMore(getHasMore());
getFragment().getAdapter().setStreamMarker(getMarker());
setFinishedLoading(getAppend());
}
catch (Exception e)
{
Debug.out(e);
ExceptionHandler.sendException(e);
}
}
super.run();
}
};
}